package com.dhcc.test.entityBinding;

import java.io.Serializable;

import javax.servlet.http.HttpSessionActivationListener;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionBindingListener;
import javax.servlet.http.HttpSessionEvent;

/**
 * @description ：普通实体类实现SessionBindingEvent，绑定Session的绑定事件和解除绑定事件,钝化和活化事件
 * 
 * 一般是tomcat服务器运行时有用户正在操作时，tomcat服务器突然中止，系统会自动钝化Session中的属性对象。
 * 当tomcat服务再启动时会自动活化以钝化的对象到Session中。
 * 钝化事件：有俩个管理类一个是默认的：StandardManger，一个是persistentManger
 * 
 * 注意：1.实现HttpSessionBindingListener接口时，不需要再web.xml中注册监听。
 *            2.实现HttpSessionActivationListener接口时，不需要再web.xml中注册监听。
 *            3.实现HttpSessionActivationListener接口钝化/活化Session属性对象时，必须实现Serializable接口，进行对象序列化和反序列化！
 * @date ：2016年11月28日 下午9:15:22
 * @author ：WangYG
 */
public class User implements HttpSessionBindingListener,HttpSessionActivationListener,Serializable{
    
    private String name;
    private String password;

    @Override
    public void valueBound(HttpSessionBindingEvent arg0) {
        System.out.println(" User Entity valueBound name="+arg0.getName());
    }

    @Override
    public void valueUnbound(HttpSessionBindingEvent arg0) {
        System.out.println(" User Entity valueUnbound name="+arg0.getName());
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    //活化方法：将钝化的session对象中不常用的属性活化(加载)到Session对象中.
    @Override
    public void sessionDidActivate(HttpSessionEvent arg0) {
        System.out.println(" User Entity sessionDidActivate name="+arg0.getSource());
    }
    
    //钝化方法 ： 将session对象中不常用的属性保存到文件(session.ser)或者数据库中，钝化起来。
    @Override
    public void sessionWillPassivate(HttpSessionEvent arg0) {
        System.out.println(" User Entity sessionWillPassivate name="+arg0.getSource());
        
    }
    

}
